Bug 552318 – menubar mnemonics consumed even when
authorMatthias Clasen <mclasen@redhat.com>
Tue, 14 Oct 2008 02:00:11 +0000 (02:00 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 14 Oct 2008 02:00:11 +0000 (02:00 +0000)
2008-10-13  Matthias Clasen  <mclasen@redhat.com>

        Bug 552318 – menubar mnemonics consumed even when
        gtk-enable-mnemonics=false

        * gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic
        entries block accelerator activation when gtk-enable-mnemonics is
        FALSE. Problem reported by Andreas Moog.

svn path=/trunk/; revision=21648

ChangeLog
gtk/gtkwindow.c

index 334c2b6760339618e4fb481228d31e8269fd8ec4..a79607499bb71b78dcf4b21d2be20f025de07a13 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-10-13  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 552318 – menubar mnemonics consumed even when
+       gtk-enable-mnemonics=false
+
+       * gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic
+       entries block accelerator activation when gtk-enable-mnemonics is
+       FALSE. Problem reported by Andreas Moog.
+
 2008-10-13  Cody Russell <cody@jhu.edu>
 
        * test/testfilechooser.c: Fix option parsing so that -a and
index a276ed64da7e52a91edb2148491c550f90e208f2..f83b4513adff396d96706821e2f6a4ee64485218 100644 (file)
@@ -8028,6 +8028,8 @@ gtk_window_activate_key (GtkWindow   *window,
 {
   GtkKeyHash *key_hash;
   GtkWindowKeyEntry *found_entry = NULL;
+  gboolean enable_mnemonics;
+  gboolean enable_accels;
 
   g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
   g_return_val_if_fail (event != NULL, FALSE);
@@ -8036,39 +8038,43 @@ gtk_window_activate_key (GtkWindow   *window,
 
   if (key_hash)
     {
+      GSList *tmp_list;
       GSList *entries = _gtk_key_hash_lookup (key_hash,
                                              event->hardware_keycode,
                                              event->state,
                                              gtk_accelerator_get_default_mod_mask (),
                                              event->group);
-      GSList *tmp_list;
+
+      g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)),
+                    "gtk-enable-mnemonics", &enable_mnemonics,
+                    "gtk-enable-accels", &enable_accels,
+                    NULL);
 
       for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next)
        {
          GtkWindowKeyEntry *entry = tmp_list->data;
          if (entry->is_mnemonic)
-           {
-             found_entry = entry;
-             break;
-           }
+            {
+              if (enable_mnemonics)
+               {
+                 found_entry = entry;
+                 break;
+               }
+            }
+          else 
+            {
+              if (enable_accels && !found_entry)
+                {
+                 found_entry = entry;
+                }
+            }
        }
-      
-      if (!found_entry && entries)
-       found_entry = entries->data;
 
       g_slist_free (entries);
     }
 
   if (found_entry)
     {
-      gboolean enable_mnemonics;
-      gboolean enable_accels;
-
-      g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)),
-                    "gtk-enable-mnemonics", &enable_mnemonics,
-                    "gtk-enable-accels", &enable_accels,
-                    NULL);
-
       if (found_entry->is_mnemonic)
         {
           if (enable_mnemonics)